1. The Field of the Invention
The present invention relates to systems and methods for storing, sharing and managing data. More particularly, the present invention relates to systems and methods for events occurring within a data store.
2. Background and Relevant Art
Computer networks are becoming increasingly important in part because they allow computers to interconnect and interact. The interconnection and interaction provided by networked computers has simplified many tasks and enables people to work together more efficiently. For example, a Local Area Network (LAN) allows users to communicate quickly and efficiently by sending electronic messages to all of the other users connected with the LAN. The Internet is another example of a network that allows users to send messages to other users connected with the Internet.
Another advantage provided by computer networks is that data can be stored in a manner that makes it available to all of the computers connected to the network storing the data. In most networks, the data is typically managed by server computers. Because there are different types of data that may be stored on a computer network, a computer network often has a server that is responsible for electronic messages (emails), a server that is responsible for documents, and yet another server managing Web pages.
Even though all of the data is available to users over the computer network, access to specific data is strongly related to the client that is accessing the stored data. More specifically, many data stores are designed to interact with specific clients or in accordance with a particular protocol. For example, server computers that make data accessible over the Internet typically interact with clients that comply with Hyper Text Transfer Protocol (HTTP) requests, while a server computer making mail data available over a LAN will interact with clients that use Mail Application Programming Interface (MAPI) requests. More generally, a particular data store is only available to known or defined clients. For this reason, users that desire to execute application logic whenever a client accesses the data store must implement and write that logic for each type of client. The application logic must comply with the protocol of both the client and the data store's server. As newer clients are added to the computer network, rewriting the application logic for each different type of client is a formidable task. A change to the application logic must be made to each separate version of the application logic. In addition, all of these client specific applications can consume valuable disk space and reduce bandwidth.
The proliferation of different and new client types is beginning to compromise the ability of a data store to meet the needs of those clients. Mobile telephones, personal digital assistants (PDAs), and other clients are beginning to provide users with the ability to access those data stores over different types of networks. Because the application logic is written for each different type of client, it is difficult to expand the capabilities and functions of a data store.
Another problem associated with application logic is that the data store is often accessed before the application logic can execute. For example, if an application desires to index a document, that document is first saved to the data store. However, it is possible for that document to be changed or accessed by another client before the application logic can execute. In another example, emails are often stored to the data store before they can be analyzed for viruses. In this situation, it is possible for that email to be opened before the application logic can scan that email. In this case, the repercussions can be tragic if the email does in fact have a virus. Current data stores do not have the ability to suspend a transaction within the data store, such as saving an email to the data store, while application logic executes. The functionality of existing data stores cannot be dynamically extended upon the occurrence of a condition or activity within the data store.